iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

Android的學習歷程系列 第 8

[Day 8] 簡單說明xml文件

  • 分享至 

  • xImage
  •  

之後要使用到android中用來解析xml文件的XmlPullParser,在這之前要先來了解xml文件的結構。

認識xml結構

1.文件開頭
首先在xml文件的開頭大多只會用到version、encoding。

<?xml version="1.0" encoding="utf-8"?>

這邊看到字面上的意思來看可以知道跟版本與編碼有關係,版本有1.0跟1.1兩種版本,大多情況下通常只會遇到1.0,在網路下載的也只遇過1.0的版本,編碼的部分有像是big5其他能夠設定的,這個部分在未來不會做到更動,稍微知道一下就可以了。

2.只能有一個根標籤
這邊拿android中的layout來做舉例。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#D4E8C6"
    android:clickable="true"
    android:focusable="true"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/select"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/button_tp01"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/search" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="@string/select_btn"
                android:textColor="#215968"
                android:textSize="20sp" />

        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/note"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginBottom="20dp"
            android:background="@drawable/button_tp01"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/notes" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="@string/note_text"
                android:textColor="#215968"
                android:textSize="20sp" />

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

根標籤就是最外層的LinearLayout,在xml中不能有兩個以上的根標籤,至於裡面要包多少標籤就沒有限制了。

3.開始與結束標籤必須成對

這邊拿其他例子舉例,像下面例子中的ATM00625、Data分別都有一個結束標籤。

<ATM00625>
  <Data>
    <Site>崙背</Site>
    <county>雲林縣</county>
    <PM25>7</PM25>
    <DataCreationDate>2019-06-19 12:00</DataCreationDate>
    <ItemUnit>μg/m3</ItemUnit>
  </Data>
  <Data>
    <Site>富貴角</Site>
    <county>新北市</county>
    <PM25>7</PM25>
    <DataCreationDate>2019-06-19 12:00</DataCreationDate>
    <ItemUnit>μg/m3</ItemUnit>
  </Data>
</ATM00625>

結構的部分先做簡單的說明,下面先說明xml常用的術語。

1.標籤(Tag)
標籤以上面的例子來說通常會有開始與結束標籤像是ATM00625,如果標籤內沒有其他東西有可能會是這個樣ATM00625/,空元素標籤在android layout中可以在各個元件中找到,像是TextView通常不會在裡面含有其他元素。

 <TextView
                android:id="@+id/air_quality_img"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                android:layout_margin="60dp"
                android:background="@drawable/park256" />

2.元素(Element)
元素通常代表開始標籤與結束標籤的其他標籤、內容,在ATM00625中包含Data這就是ATM00625的元素,而Data中又含有Site、county、PM25、DataCreationDate、ItemUnit這5個元素。

<ATM00625>
  <Data>
    <Site>崙背</Site>
    <county>雲林縣</county>
    <PM25>7</PM25>
    <DataCreationDate>2019-06-19 12:00</DataCreationDate>
    <ItemUnit>μg/m3</ItemUnit>
  </Data>
  <Data>
    <Site>富貴角</Site>
    <county>新北市</county>
    <PM25>7</PM25>
    <DataCreationDate>2019-06-19 12:00</DataCreationDate>
    <ItemUnit>μg/m3</ItemUnit>
  </Data>
</ATM00625>

3.屬性(Attribute)
這邊拿ATM00625的例子來改,屬性通常會依照「名字-值」來表達,像下面ATM00625中的第一個元素裡的Attribute就是屬性名稱,content就是屬性的值。

<ATM00625>
  <Data Attribute="content">
    <Site>崙背</Site>
    <county>雲林縣</county>
    <PM25>7</PM25>
    <DataCreationDate>2019-06-19 12:00</DataCreationDate>
    <ItemUnit>μg/m3</ItemUnit>
  </Data>
  <Data>
    <Site>富貴角</Site>
    <county>新北市</county>
    <PM25>7</PM25>
    <DataCreationDate>2019-06-19 12:00</DataCreationDate>
    <ItemUnit>μg/m3</ItemUnit>
  </Data>
</ATM00625>

今天先了解xml文件的部分,明天會開始使用XmlPullParser來解析xml內容。


上一篇
[Day 7] Android程式設計-使用OpenData資料製作app(五)(kotlin)
下一篇
[Day 9] Android-使用XmlPullParser取得xml資料
系列文
Android的學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言